package com.engineering.elink.service;

import java.util.List;
import java.util.Map;

import com.engineering.elink.co.recruit.CvdBaseInfoCo;
import com.engineering.elink.co.recruit.CvdDataSearchCo;
import com.engineering.elink.co.recruit.CvdJobIntentionCo;
import com.engineering.elink.co.recruit.CvdSearchCo;
import com.engineering.elink.co.recruit.EducationExperienceAddCo;
import com.engineering.elink.co.recruit.ProjectExperienceAddCo;
import com.engineering.elink.co.recruit.WorkExperienceAddCo;
import com.engineering.elink.domain.recruit.CardType;
import com.engineering.elink.domain.recruit.Salary;
import com.engineering.elink.vo.recruit.SalaryVo;

/**
 * 
 * 简历相关业务操作接口
 * 
 * ClassName: CvDatabaseService <br/> 
 * Function: ADD FUNCTION. <br/> 
 * Reason: ADD REASON(可选). <br/> 
 * date: 2016年11月30日 下午1:28:05 <br/> 
 * 
 * @author zengxinyan 
 * @version  
 * @since JDK 1.8
 */
public interface CvDatabaseService {

	/**
	 * 获取证件类型
	 * 
	 * getCardType:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @return 
	 * @since JDK 1.8
	 */
	List<CardType> getCardType();
	
	/**
	 * 设置公开
	 * 
	 * updateOpen:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param open
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> updateOpen(String cvdId,Integer open);
	
	/**
	 * 保存简历求职意向
	 * 
	 * saveJobIntention:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param jobIntentionCo
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> saveJobIntention(String cvdId,CvdJobIntentionCo jobIntentionCo,String userId);
	
	/**
	 * 保存简历基本信息
	 * 
	 * saveBaseInfo:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param jobIntentionCo
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> saveBaseInfo(String cvdId,CvdBaseInfoCo baseInfoCo,String userId);
	
	/**
	 * 批量保存工作经验
	 * 
	 * saveWorkExperience:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param jsonStr
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> saveWorkExperience(String cvdId,String jsonStr,String userId);
	
	/**
	 * 批量保存教育经历
	 * 
	 * saveEducationExperience:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param jsonStr
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> saveEducationExperience(String cvdId,String jsonStr,String userId);
	
	/**
	 * 批量保存项目经验
	 * 
	 * saveProjectExperience:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param jsonStr
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> saveProjectExperience(String cvdId,String jsonStr,String userId);
	
	/**
	 * 简历详情
	 * 
	 * get:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> get(String userId,String cvdId);
	
	/**
	 * 保存简历所有信息
	 * 
	 * saveCvdDatabase:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param baseInfoCo
	 * @param jobIntentionCo
	 * @param workJsonStr
	 * @param eduJsonStr
	 * @param projectJsonStr
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> saveCvdDatabase(String cvdId,CvdBaseInfoCo baseInfoCo,CvdJobIntentionCo jobIntentionCo,
			String workJsonStr,String eduJsonStr,String projectJsonStr,String userId);
	
	/**
	 * 获取所有薪资
	 * 
	 * getSalary:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @return 
	 * @since JDK 1.8
	 */
	List<Salary> getSalary();
	
	/**
	 * 获取几条记录
	 * 
	 * getSalaryByLimit:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param count
	 * @return 
	 * @since JDK 1.8
	 */
	List<SalaryVo> getSalaryByLimit(Integer count);
	
	/**
	 * 招聘管理－应聘管理－最新简历
	 * 
	 * getCvdDeliveryList:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> getCvdDeliveryList(CvdSearchCo co,String userId);
	
	/**
	 * 
	 * 批量移至简历库
	 * 
	 * batchMoveCvd:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param vdId
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> batchMoveCvd(String vdIds,String userId);
	
	/**
	 * 招聘管理－应聘管理－简历库
	 * 
	 * getCvdDeliveryList:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> getCvdCollectionList(CvdSearchCo co,String userId);
	
	/**
	 * 批量更新简历库状态
	 * 
	 * batchUpdateCvdStatus:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param vcIds
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> batchUpdateCvdStatus(String vcIds,Integer status,String userId);
	
	/**
	 * 保存简历工作经验
	 * 
	 * saveWorkExp:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param workCo
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> saveWorkExp(String cvdId,WorkExperienceAddCo workCo,String userId);
	
	/**
	 * 更新工作经验
	 * 
	 * updateWorkExp:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param weId
	 * @param workCo
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> updateWorkExp(String cvdId,Integer weId,WorkExperienceAddCo workCo,String userId);
	
	/**
	 * 删除简历工作经验
	 * 
	 * deleteWorkExp:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param weId
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> deleteWorkExp(Integer weId,String userId);
	
	/**
	 * 保存简历教育经验
	 * 
	 * saveEduExp:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param eeCo
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> saveEduExp(String cvdId,EducationExperienceAddCo eeCo,String userId);
	
	/**
	 * 更新教育经历
	 * 
	 * updateEduExp:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param eeId
	 * @param eeCo
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> updateEduExp(String cvdId,Integer eeId,EducationExperienceAddCo eeCo,String userId);
	
	/**
	 * 删除教育经历
	 * 
	 * deleteEduExp:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param eeId
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> deleteEduExp(Integer eeId,String userId);
	
	/**
	 * 保存简历项目经验
	 * 
	 * saveProjectExp:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param peCo
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> saveProjectExp(String cvdId,ProjectExperienceAddCo peCo,String userId);
	
	/**
	 * 更新简历项目经验
	 * 
	 * updateProjectExp:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param cvdId
	 * @param peId
	 * @param peCo
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> updateProjectExp(String cvdId,Integer peId,ProjectExperienceAddCo peCo,String userId);
	
	/**
	 * 删除项目经验
	 * 
	 * deleteProExp:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param peId
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> deleteProExp(Integer peId,String userId);
	
	/**
	 * 招聘管理－搜索简历
	 * 
	 * getSearchCvdList:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> getSearchCvdList(CvdDataSearchCo co,String userId);
	
	/**
	 * 批量更新投递简历状态
	 * 
	 * batchUpdateCvdType:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param vdIds
	 * @param type
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> batchUpdateCvdType(String vdIds,Integer type,String userId);
}
